package com.literaryfamily.literaryfamily.service.payment;

import com.literaryfamily.literaryfamily.entity.UserAccounts;
import com.literaryfamily.literaryfamily.model.ReturnResult;

import java.math.BigDecimal;

/**
 * 此接口为用户余额操作,在进行任何操作之前都需要验证用户身份
 * 所有涉及读写的方法都需要抛出 WriteError 数据库读写错误异常(这个是运行时异常,只需要抛出不需要处理)
 * 此接口所有方法均不检查用户身份,应该验证身份后在进行检查
 * @author 滑稽/因果报应
 */
public interface BalanceService {
	/**
	 * 增减用户余额
	 *
	 * @param userId        用户ID
	 * @param balance       增减的金额
	 * @param transactionId 交易单ID
	 * @param msg           交易和备注信息
	 * @return 增减记录信息
	 */
	UserAccounts rechargeBalance(Long userId, BigDecimal balance, String transactionId, String msg);

	/**
	 * 获取余额变动的历史记录
	 *
	 * @param userId  获取的用户ID
	 * @param page    页数
	 * @param maxSize 每页显示记录条数
	 * @return 记录信息
	 */
	UserAccounts getBalanceHistory(Long userId, int page, int maxSize);

}